﻿using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Shapes;
using System.Windows.Media;
using System.Windows.Media.Media3D;
using System.Windows.Media.Imaging;
using System.Windows.Media.Animation;

using Bling.Core;
using Bling.WPF;
using Bling.WPF.Util;
using Bling.Slides;
using Bling.Util;
using Bling.Shaders;
using Bling.Graphics;
using Bling.Matrices;

namespace Bling.D3D10.Example {
  using Bling.WPF.Custom;
  using Bling.Example;
  public class Driver : SlideHolder {


    public Driver() {
      this["Intro"] = () => new Bling.Example.Intro();
      this["Basic"] = () => new Bling.Example.Basic();
      this["Intermediate"] = () => new Bling.Example.Intermediate();
      this["Advanced"] = () => new Bling.Example.Advanced();
      this["Volume"] = () => new Bling.Example.FakeVolume();

      this["ParametricA"] = () => new Bling.Example.ParametricWithInference();
      this["ParametricB"] = () => new Bling.Example.ParametricNoInference();

      this["Diffusion"] = () => new Bling.Example.Diffusion();
      this["Particles"] = () => new Bling.Example.ParticlesGS();

      this["Bump"] = () => new Bling.Example.Bump();
      this["Parallex"] = () => new Bling.Example.Parallex();
      Loaded += (x, y) => {
        Init();
      };
    }
    [STAThread]
    public static void Main(string[] args) {
      var win = new Window() { Title = "Bling Tutorial", Content = new Driver() };
      new Application().Run(win);
      return;
    }
  }
}